package com.itcncp.wechat.app.dao.model;

import com.alibaba.fastjson.annotation.JSONField;
import com.itcncp.common.plugin.ToStringSerializer;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

public class ItcsPlazaInfo implements Serializable {
    /**
     * 收费广场编号（id）=14位收费站编号+1位收费广场类型+2位收费广场顺序码+1位保留位 
 1位收费广场类型，出入口属性 1 &mdash; 封闭式入口 2 &mdash; 封闭式出口 3 &mdash; 开放式 4 &mdash; 封闭式出+封闭式入 5 &mdash; 开放式+封闭式入 6 &mdash; 封闭式出+开放式 7 &mdash; 均一制 
 2位收费广场顺序码，顺序码从正北方位开始顺时针旋转，编号从01开始
     *
     * @mbg.generated
     */
    private String tollPlazaId;

    private String stationId;

    /**
     * 收费广场名称
     *
     * @mbg.generated
     */
    private String name;

    /**
     * 收费广场类型
     *
     * @mbg.generated
     */
    private Byte type;

    /**
     * 广场类型 1 &mdash; 主线收费广场 2 &mdash; 匝道收费广场
     *
     * @mbg.generated
     */
    private Byte plazaType;

    /**
     * 纬度
     *
     * @mbg.generated
     */
    private BigDecimal longitude;

    /**
     * 经度
     *
     * @mbg.generated
     */
    private BigDecimal latitude;

    /**
     * 桩号
     *
     * @mbg.generated
     */
    private String stakeNum;

    /**
     * 专用车道数
     *
     * @mbg.generated
     */
    private Integer appLaneCount;

    /**
     * 混合车道数
     *
     * @mbg.generated
     */
    private Integer mixLaneCount;

    /**
     * 1、-申请驳回 2、-开通申请  3、-材料审核中  4、-材料审核通过  5、-预约安装-安装完毕  6、-正常使用（含用户评价）
     *
     * @mbg.generated
     */
    private Byte status;

    /**
     * 数据是否删除 1、删除 2、不删除
     *
     * @mbg.generated
     */
    private Byte del;

    @JSONField(serializeUsing= ToStringSerializer.class)
    private Long storeId;

    /**
     * 创建时间
     *
     * @mbg.generated
     */
    private Date createTime;

    private String remark;

    private static final long serialVersionUID = 1L;

    public String getTollPlazaId() {
        return tollPlazaId;
    }

    public void setTollPlazaId(String tollPlazaId) {
        this.tollPlazaId = tollPlazaId;
    }

    public String getStationId() {
        return stationId;
    }

    public void setStationId(String stationId) {
        this.stationId = stationId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Byte getType() {
        return type;
    }

    public void setType(Byte type) {
        this.type = type;
    }

    public Byte getPlazaType() {
        return plazaType;
    }

    public void setPlazaType(Byte plazaType) {
        this.plazaType = plazaType;
    }

    public BigDecimal getLongitude() {
        return longitude;
    }

    public void setLongitude(BigDecimal longitude) {
        this.longitude = longitude;
    }

    public BigDecimal getLatitude() {
        return latitude;
    }

    public void setLatitude(BigDecimal latitude) {
        this.latitude = latitude;
    }

    public String getStakeNum() {
        return stakeNum;
    }

    public void setStakeNum(String stakeNum) {
        this.stakeNum = stakeNum;
    }

    public Integer getAppLaneCount() {
        return appLaneCount;
    }

    public void setAppLaneCount(Integer appLaneCount) {
        this.appLaneCount = appLaneCount;
    }

    public Integer getMixLaneCount() {
        return mixLaneCount;
    }

    public void setMixLaneCount(Integer mixLaneCount) {
        this.mixLaneCount = mixLaneCount;
    }

    public Byte getStatus() {
        return status;
    }

    public void setStatus(Byte status) {
        this.status = status;
    }

    public Byte getDel() {
        return del;
    }

    public void setDel(Byte del) {
        this.del = del;
    }

    public Long getStoreId() {
        return storeId;
    }

    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", tollPlazaId=").append(tollPlazaId);
        sb.append(", stationId=").append(stationId);
        sb.append(", name=").append(name);
        sb.append(", type=").append(type);
        sb.append(", plazaType=").append(plazaType);
        sb.append(", longitude=").append(longitude);
        sb.append(", latitude=").append(latitude);
        sb.append(", stakeNum=").append(stakeNum);
        sb.append(", appLaneCount=").append(appLaneCount);
        sb.append(", mixLaneCount=").append(mixLaneCount);
        sb.append(", status=").append(status);
        sb.append(", del=").append(del);
        sb.append(", storeId=").append(storeId);
        sb.append(", createTime=").append(createTime);
        sb.append(", remark=").append(remark);
        sb.append("]");
        return sb.toString();
    }

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        ItcsPlazaInfo other = (ItcsPlazaInfo) that;
        return (this.getTollPlazaId() == null ? other.getTollPlazaId() == null : this.getTollPlazaId().equals(other.getTollPlazaId()))
            && (this.getStationId() == null ? other.getStationId() == null : this.getStationId().equals(other.getStationId()))
            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
            && (this.getPlazaType() == null ? other.getPlazaType() == null : this.getPlazaType().equals(other.getPlazaType()))
            && (this.getLongitude() == null ? other.getLongitude() == null : this.getLongitude().equals(other.getLongitude()))
            && (this.getLatitude() == null ? other.getLatitude() == null : this.getLatitude().equals(other.getLatitude()))
            && (this.getStakeNum() == null ? other.getStakeNum() == null : this.getStakeNum().equals(other.getStakeNum()))
            && (this.getAppLaneCount() == null ? other.getAppLaneCount() == null : this.getAppLaneCount().equals(other.getAppLaneCount()))
            && (this.getMixLaneCount() == null ? other.getMixLaneCount() == null : this.getMixLaneCount().equals(other.getMixLaneCount()))
            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
            && (this.getDel() == null ? other.getDel() == null : this.getDel().equals(other.getDel()))
            && (this.getStoreId() == null ? other.getStoreId() == null : this.getStoreId().equals(other.getStoreId()))
            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
            && (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getTollPlazaId() == null) ? 0 : getTollPlazaId().hashCode());
        result = prime * result + ((getStationId() == null) ? 0 : getStationId().hashCode());
        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
        result = prime * result + ((getPlazaType() == null) ? 0 : getPlazaType().hashCode());
        result = prime * result + ((getLongitude() == null) ? 0 : getLongitude().hashCode());
        result = prime * result + ((getLatitude() == null) ? 0 : getLatitude().hashCode());
        result = prime * result + ((getStakeNum() == null) ? 0 : getStakeNum().hashCode());
        result = prime * result + ((getAppLaneCount() == null) ? 0 : getAppLaneCount().hashCode());
        result = prime * result + ((getMixLaneCount() == null) ? 0 : getMixLaneCount().hashCode());
        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
        result = prime * result + ((getDel() == null) ? 0 : getDel().hashCode());
        result = prime * result + ((getStoreId() == null) ? 0 : getStoreId().hashCode());
        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
        result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
        return result;
    }
}